6 #ifndef _CFEXPELEMENT_H_ 7 #define _CFEXPELEMENT_H_ 16 #define FE_NODE_BASE_VECT_LENGTH 6 76 std::map<size_t, Ptr<std::vector<Ptr<table_row_values>>>>
_table;
212 template<
typename TValue,
typename Enable =
void>
216 template<
typename TValue>
219 <TValue, typename std::enable_if<std::is_floating_point<TValue>::value>::type>
297 std::map<size_t, std::weak_ptr<ICFEXPElementBase>> _elements;
309 template<
typename TValue,
typename Enable =
void>
313 template<
typename TValue>
316 <TValue, typename std::enable_if<std::is_floating_point<TValue>::value>::type>
322 virtual void SetForcesToDefault() = 0;
326 virtual void CalcIntForce() = 0;
345 template<
typename TValue,
typename Enable =
void>
349 template<
typename TValue>
352 <TValue, typename std::enable_if<std::is_floating_point<TValue>::value>::type>
421 template<
typename TFeNode>
422 static typename std::enable_if<std::is_base_of<ICFEXPElementNodeBase, TFeNode>::value,
Ptr<TFeNode>>::type
432 template<
typename TFeNode>
433 typename std::enable_if<std::is_base_of<ICFEXPElementNodeBase, TFeNode>::value,
Ptr<TFeNode>>::type
516 enum EExplicitIntegrVect { eCurrent, eOld };
517 std::map<EExplicitIntegrVect, Ptr<CFEXPMatrix2D>> _u;
518 std::map<EExplicitIntegrVect, Ptr<CFEXPMatrix2D>> _F_int;
519 std::map<EExplicitIntegrVect, Ptr<CFEXPMatrix2D>> _F_ext;
520 std::map<EExplicitIntegrVect, Ptr<CFEXPMatrix2D>> _F_cnt;
526 std::map<std::string, std::function<std::string()>> _result_map_gttr;
587 size_t _layer_number;
590 std::vector<t_fexpcommon_ct> _fe_int_weight;
591 std::vector<t_fexpcommon_ct> _fe_int_layers;
593 enum EShellNodeIndex { eNode1, eNode2, eNode3, eNodeCount };
597 std::vector<Ptr<ICFEXPMaterialBase>> _material;
598 bool is_material_valid(
size_t layer);
601 void prepare_data_for_stress_strain_calc();
608 void calc_B_strain_matrixes();
620 std::vector<Ptr<CFEXPMatrix2D>> _strn;
621 std::vector<Ptr<CFEXPMatrix2D>> _d_strn;
622 std::vector<Ptr<CFEXPMatrix2D>> _stress;
628 std::map<size_t, Ptr<CFEXPMatrix2D>> _f_int;
630 std::map<size_t, Ptr<CFEXPMatrix2D>> _f_cnt;
632 std::map<std::string, std::function<std::string()>> _result_map_gttr;
650 #define FINITE_ELEMENT_BLOCK FINITE_ELEMENT_SRUCT 652 #define FINITE_ELEMENT_KEY_KEY(cls) STRUCT_KEYS(FINITE_ELEMENT_BLOCK, CLS_KEY(cls)) 654 #define FINITE_ELEMENT_CLS(cls, basecls) CLS_MAP_PAIR(FINITE_ELEMENT_BLOCK, cls, basecls) 661 using t_FElementMap = std::map<FEXPFEDefinition::EFEXPFiniteElementType, std::function<Ptr<ICFEXPElementBase>()>>;
671 #endif // !_CFEXPELEMENT_H_ virtual t_fexpcommon_ct GetForce(EFEXPElementForce force, size_t idx) override
Definition: FEXPElement.cpp:343
std::map< FEXPFEDefinition::EFEXPFiniteElementType, std::function< Ptr< ICFEXPElementBase >()> > t_FElementMap
Definition: FEXPElement.h:661
static const FEXPFEDefinition::EFEXPFiniteElementGeom G_TYPE
Definition: FEXPElement.h:575
virtual t_fexpcommon_ct GetDisplacement(FEXPFEGeom::EFEXPFECoordinates dir) override
Definition: FEXPElement.cpp:511
virtual void SetForce(EFEXPElementForce force, size_t node_id, size_t idx, t_fexpcommon_ct value) override
Definition: FEXPElementShell.cpp:1061
virtual void SetForcesToDefault() override
Definition: FEXPElement.cpp:309
virtual void CalculateTransformation()=0
Ptr< CFEXGeomTools::t_BoundBox > GetBoundingBoxBounds()
Definition: FEXPElement.cpp:713
Base interface for nodal load.
Definition: FEXPElement.h:151
virtual ~ICFEXPElementCalcAction()
Definition: FEXPElement.h:319
size_t _model_id
Definition: FEXPElement.h:290
Definition: FEXPElement.h:19
C^0 T. Belytschko 3-noded (one quadrature node) triangular shell FE.
Definition: FEXPElement.h:537
virtual void SetThreadId(size_t id) override
Definition: FEXPElement.h:192
Definition: FEXPElement.h:155
Base interface for nodal constrains.
Definition: FEXPElement.h:89
t_fexpcommon_ct _x
Definition: FEXPElement.h:64
virtual Ptr< std::map< std::string, std::string > > GetResult() override
Definition: FEXPElementShell.cpp:609
bool GetIsSimulationEnd()
Definition: FEXPElement.h:286
virtual Ptr< t_SerializedData > NetSerialize() override
Definition: FEXPElement.h:135
t_fexpcommon_ct GetCurrentTime()
Definition: FEXPElement.h:287
virtual void CalcNewPosition(t_fexpcommon_ct dt, t_fexpcommon_ct dt_old)=0
virtual t_fexpcommon_ct GetForce(EFEXPElementForce force, size_t node_id, size_t idx)=0
Definition: FEXPElement.h:93
Definition: FEXPElement.h:310
ICFEXPElementNodeConstrain(size_t id)
Definition: FEXPElement.h:95
virtual t_fexpcommon_ct GetPentratingContactForce(size_t idx) override
Definition: FEXPElement.cpp:353
virtual void ApplyConstrain(EConstrType type, Ptr< CFEXPMatrix2D > &vect, t_fexpcommon_ct time)=0
virtual void SetForcesToDefault() override
Definition: FEXPElementShell.cpp:155
t_fexpcommon_ct _t_current
Definition: FEXPElement.h:293
size_t GetLoadId()
Definition: FEXPElement.h:160
virtual void CalcStress(t_fexpcommon_ct dt) override
Definition: FEXPElementShell.cpp:576
bool _print_result
Definition: FEXPElement.h:295
ELoadType
Definition: FEXPElement.h:155
CFEXPElementShellTriag()
Definition: FEXPElementShell.cpp:20
size_t GetTimeStepCounter()
Definition: FEXPElement.h:284
virtual t_fexpcommon_ct GetOriginalCoordinate(size_t idx) override
Definition: FEXPElement.cpp:336
virtual void SetThreadId(size_t id) override
Definition: FEXPElement.h:130
size_t _state_x
Definition: FEXPElement.h:67
virtual size_t GetId() override
Definition: FEXPElement.h:187
Ptr< CFEXPMatrix2D > & GetAccel()
Definition: FEXPElement.h:488
void set_value(FEXPFEGeom::EFEXPFECoordinates dir, size_t state, t_fexpcommon_ct value)
Definition: FEXPElement.cpp:96
virtual size_t GetModelId() override
Definition: FEXPElement.h:126
virtual size_t GetThreadId() override
Definition: FEXPElement.h:128
virtual void InitConstrain(Ptr< ICFEXPElementNodeConstrain > &constrain_v, Ptr< ICFEXPElementNodeConstrain > &constrain_a) override
Definition: FEXPElement.cpp:318
virtual Ptr< t_SerializedData > NetSerialize() override
Definition: FEXPElement.h:197
virtual Ptr< CFEXPMatrix2D > GetInrt()
Definition: FEXPElement.h:269
void AddConstrainData(FEXPFEGeom::EFEXPFECoordinates dir, EConstrType type, EConstrStat state, t_fexpcommon_ct time, t_fexpcommon_ct cstr)
Definition: FEXPElement.h:99
virtual void SetForce(EFEXPElementForce force, size_t node_id, size_t idx, t_fexpcommon_ct value)=0
void AddLoadData(FEXPFEGeom::EFEXPFECoordinates dir, ELoadType type, ELoadStat state, t_fexpcommon_ct time, t_fexpcommon_ct cstr)
Definition: FEXPElement.h:161
void get_value(FEXPFEGeom::EFEXPFECoordinates dir, size_t &state, t_fexpcommon_ct &value)
Definition: FEXPElement.cpp:108
virtual void ApplyConstrain(EConstrType type, Ptr< CFEXPMatrix2D > &vect, t_fexpcommon_ct time) override
Definition: FEXPElement.cpp:130
virtual size_t GetType() override
Definition: FEXPElement.h:189
virtual Ptr< t_SerializedData > NetSerialize() override
Definition: FEXPElementShell.cpp:621
ICFEXPElementBase(FEXPFEDefinition::EFEXPFiniteElementGeom egeom)
Definition: FEXPElement.cpp:694
size_t GetConstrainId()
Definition: FEXPElement.h:98
virtual void CalcIntForce() override
Definition: FEXPElementShell.cpp:180
#define FEXPCOMMON_STACAST(clsfrom, clsto, variable)
Definition: FEXPCommon.h:137
t_fexpcommon_ct _y
Definition: FEXPElement.h:65
virtual ~CFEXPElementNodeTableDataBase()
Definition: FEXPElement.h:57
size_t _state_y
Definition: FEXPElement.h:68
EFEXPNodeResult
The type of result data.
Definition: FEXPElement.h:22
static const FEXPFEDefinition::EFEXPFiniteElementType ID
Definition: FEXPElement.h:574
virtual ~ICFEXPElementInitAction()
Definition: FEXPElement.h:355
size_t GetElementId() const
Definition: FEXPElement.h:395
Definition: FEXPCommon.h:108
virtual Ptr< std::map< std::string, std::string > > GetResult()=0
CFEXPElementNodeGeneral(size_t id, size_t model_id, t_fexpcommon_ct x, t_fexpcommon_ct y, t_fexpcommon_ct z, Ptr< CFEXPBaseSetting > setting)
Definition: FEXPElement.cpp:258
virtual void SetMass(t_fexpcommon_ct mass)
Definition: FEXPElement.h:267
CFEXPElementNodeConstrain(size_t id)
Definition: FEXPElement.cpp:125
EConstrStat
Definition: FEXPElement.h:94
Finite element node coordinates.
Definition: FEXPGeom.h:78
bool get_table_data(FEXPFEGeom::EFEXPFECoordinates dir, size_t type, t_fexpcommon_ct time, size_t &state, t_fexpcommon_ct &value)
Definition: FEXPElement.cpp:44
virtual size_t GetType() override
Definition: FEXPElement.h:257
Definition: FEXPElement.h:346
Definition: FEXPDataContainer.h:25
virtual void SetForcesToDefault()=0
virtual void NetDeserialize(Ptr< t_SerializedData > data) override
Definition: FEXPElement.cpp:616
void apply_acc_load(Ptr< CFEXPMatrix2D > &acc)
Definition: FEXPElement.cpp:559
FEXPFEDefinition::EFEXPFiniteElementGeom GetElementGeom()
Definition: FEXPElement.h:393
virtual t_fexpcommon_ct GetCriticalDt()=0
virtual Ptr< std::map< std::string, std::string > > GetResult()=0
virtual void CalculateTransformation() override
Definition: FEXPElementShell.cpp:595
Ptr< CFEXPMatrix2D > & GetVeloc()
Definition: FEXPElement.h:486
virtual t_fexpcommon_ct GetForce(EFEXPElementForce force, size_t node_id, size_t idx) override
Definition: FEXPElementShell.cpp:1073
CFEXPElementNodeTableDataBase()
Definition: FEXPElement.h:56
virtual size_t GetId() override
Definition: FEXPElement.h:387
static const t_FElementMap FINITE_ELEMENT_CLS_MAP
Definition: FEXPElement.h:662
virtual size_t GetThreadId() override
Definition: FEXPElement.h:190
Definition: FEXPCommon.h:276
double t_fexpcommon_ct
Definition: FEXPCommon.h:120
Definition: FEXPCommon.h:110
size_t _fe_model_id
Definition: FEXPElement.h:411
Definition: FEXPElement.h:94
ICFEXPElementNodeLoad(size_t id)
Definition: FEXPElement.h:157
size_t _fe_nd_count
Definition: FEXPElement.h:413
std::vector< std::weak_ptr< ICFEXPElementNodeBase > > _node_coord
Definition: FEXPElement.h:419
Base interface for FE nodes.
Definition: FEXPElement.h:245
virtual size_t GetType() override
Definition: FEXPElement.h:127
virtual t_fexpcommon_ct GetMass()
Definition: FEXPElement.h:268
virtual void SetPentratingContactForce(size_t idx, t_fexpcommon_ct force)=0
EFEXPElementForce
The type of computed forces (external forces are considered similarly as constrains) ...
Definition: FEXPElement.h:19
virtual size_t GetThreadNumber() override
Definition: FEXPElement.h:544
table_row_values()
Definition: FEXPElement.h:70
Definition: FEXPElement.h:93
Definition: FEXPElement.h:155
Definition: FEXPElement.h:22
virtual void ApplyLoad(ELoadType type, Ptr< CFEXPMatrix2D > &vect, t_fexpcommon_ct time)
Definition: FEXPElement.cpp:178
virtual ~ICFEXPGeomAction()
Definition: FEXPElement.h:35
ELoadStat
Definition: FEXPElement.h:156
virtual void SetPentratingContactForce(size_t idx, t_fexpcommon_ct force) override
Definition: FEXPElement.cpp:360
virtual ~ICFEXPElementBase()
Definition: FEXPElement.h:384
bool GetIsTimeToSaveRes()
Definition: FEXPElement.h:285
const FEXPFEDefinition::EFEXPFiniteElementType FINITE_ELEMENT_SRUCT[FEXPFEDefinition::EFEXPFiniteElementType::eFeCount]
Types of implemented FEs.
Definition: FEXPElement.h:643
virtual size_t GetTimeStepCounter() override
Definition: FEXPElementShell.cpp:1105
virtual Ptr< t_SerializedData > NetSerialize() override
Definition: FEXPElement.cpp:569
Definition: FEXPDataContainer.h:25
size_t _thread_id
Definition: FEXPElement.h:289
#define FEXPCOMMON_NOT_IMPLEMENTED_EX
Definition: FEXPCommon.h:144
virtual size_t GetId() override
Definition: FEXPElement.h:255
virtual void CalcNewPosition(t_fexpcommon_ct dt, t_fexpcommon_ct dt_old) override
Definition: FEXPElement.cpp:367
virtual t_fexpcommon_ct GetForce(EFEXPElementForce force, size_t idx)=0
virtual void NetDeserialize(Ptr< t_SerializedData > data) override
Definition: FEXPElementShell.cpp:658
Ptr< std::vector< std::weak_ptr< ICFEXPElementBase > > > GetAssocElements()
Definition: FEXPElement.cpp:244
virtual size_t GetModelId() override
Definition: FEXPElement.h:388
Definition: FEXPElement.h:22
virtual void SetThreadId(size_t id) override
Definition: FEXPElement.h:391
virtual size_t GetThreadNumber() override
Definition: FEXPElement.h:129
virtual size_t GetModelId() override
Definition: FEXPElement.h:256
virtual ~CFEXPElementNodeLoad()
Definition: FEXPElement.h:185
Definition: FEXPElement.h:156
static Ptr< ICFEXPElementBase > GetFiniteElement(FEXPFEDefinition::EFEXPFiniteElementType el_type)
Definition: FEXPElement.cpp:678
virtual void NetDeserialize(Ptr< t_SerializedData > data) override
Definition: FEXPElement.h:136
Definition: FEXPElement.h:93
virtual Ptr< std::map< std::string, std::string > > GetResult() override
Definition: FEXPElement.cpp:499
t_fexpcommon_ct _z
Definition: FEXPElement.h:66
Definition: FEXPElement.h:213
virtual size_t GetThreadId() override
Definition: FEXPElement.h:390
Definition: FEXPElement.h:19
virtual void Init(size_t id, size_t model_id, std::vector< Ptr< ICFEXPElementNodeBase >> &nodes, Ptr< ICFEXPMaterialBase > material, Ptr< CFEXPBaseSetting > setting) override
Definition: FEXPElementShell.cpp:26
Interface for main computational actions in terms of the model geometry.
Definition: FEXPElement.h:32
EFEXPFiniteElementType
Type of FE.
Definition: FEXPCommon.h:106
Definition: FEXPCommon.h:113
t_fexpcommon_ct _t_end
Definition: FEXPElement.h:294
Base class for 2D FE.
Definition: FEXPElement.h:377
virtual size_t GetNodeId()
Definition: FEXPGeom.h:226
virtual void ApplyLoad(ELoadType type, Ptr< CFEXPMatrix2D > &vect, t_fexpcommon_ct time)=0
virtual t_fexpcommon_ct GetOriginalCoordinate(size_t idx)=0
Chart definition.
Definition: FEXPElement.h:53
void apply_acc_constrains(Ptr< CFEXPMatrix2D > &acc)
Definition: FEXPElement.cpp:520
Definition: FEXPElement.h:94
Definition: FEXPDataContainer.h:25
virtual ~CFEXPElementNodeGeneral()
Definition: FEXPElement.h:454
Definition: FEXPDataContainer.h:25
virtual size_t GetTimeStepCounter()=0
virtual void NetDeserialize(Ptr< t_SerializedData > data) override
Definition: FEXPElement.h:198
EFEXPFiniteElementGeom
Type of FE geometry.
Definition: FEXPCommon.h:90
virtual ~ICFEXPElementNodeBase()
Definition: FEXPElement.h:252
size_t GetNodeCount() const
Definition: FEXPElement.h:396
virtual size_t GetModelId() override
Definition: FEXPElement.h:188
virtual ~CFEXPElementShellTriag()
Definition: FEXPElement.h:542
Definition: FEXPElement.h:22
virtual ~ICFEXPElementNodeLoad()
Definition: FEXPElement.h:158
CFEXPElementNodeLoad(size_t id)
Definition: FEXPElement.cpp:173
ICFEXPElementNodeBase(size_t id, size_t model_id, t_fexpcommon_ct x, t_fexpcommon_ct y, t_fexpcommon_ct z)
Definition: FEXPElement.cpp:222
Ptr< CFEX3DPlane< t_fexpcommon_ct > > get_element_plane(Ptr< ICFEXPElementNodeBase > nd1, Ptr< ICFEXPElementNodeBase > nd2, Ptr< ICFEXPElementNodeBase > nd3)
Definition: FEXPElement.cpp:701
void apply_vel_constrains(Ptr< CFEXPMatrix2D > &vel)
Definition: FEXPElement.cpp:539
Base interface for system element.
Definition: FEXPDataContainer.h:28
Definition: FEXPElement.h:22
#define FEXPCOMMON_DEFAULT_VALUE
Definition: FEXPCommon.h:179
t_fexpcommon_ct _time
Definition: FEXPElement.h:63
virtual ~ICFEXPElementNodeInitAction()
Definition: FEXPElement.h:222
void SetAssocElement(Ptr< ICFEXPElementBase > &elem)
Definition: FEXPElement.cpp:235
size_t _state_z
Definition: FEXPElement.h:69
virtual size_t GetThreadNumber() override
Definition: FEXPElement.h:456
General shell FE node.
Definition: FEXPElement.h:448
size_t _t_counter
Definition: FEXPElement.h:292
static std::enable_if< std::is_base_of< ICFEXPElementNodeBase, TFeNode >::value, Ptr< TFeNode > >::type get_specific_fe_node(Ptr< ICFEXPElementNodeBase > base)
Definition: FEXPElement.h:434
virtual ~ICFEXPElementNodeConstrain()
Definition: FEXPElement.h:96
virtual void InitLoad(Ptr< ICFEXPElementNodeLoad > &load) override
Definition: FEXPElement.cpp:327
virtual size_t GetThreadId() override
Definition: FEXPElement.h:258
Nodal load.
Definition: FEXPElement.h:180
Factory for FEs. It creates FE based on the settings comming from an input data files.
Definition: FEXPElement.h:658
void add_table_data(FEXPFEGeom::EFEXPFECoordinates dir, size_t type, size_t state, t_fexpcommon_ct time, t_fexpcommon_ct value)
Definition: FEXPElement.cpp:10
Definition: FEXPElement.h:93
virtual size_t GetId() override
Definition: FEXPElement.h:125
virtual t_fexpcommon_ct GetDisplacement(FEXPFEGeom::EFEXPFECoordinates dir)=0
Definition: FEXPElement.h:61
virtual t_fexpcommon_ct GetPentratingContactForce(size_t idx)=0
Definition: FEXPElement.h:156
Definition: FEXPElement.h:155
std::vector< std::weak_ptr< ICFEXPElementNodeBase > > & GetNodes()
Definition: FEXPElement.h:397
std::map< size_t, Ptr< std::vector< Ptr< table_row_values > > > > _table
Definition: FEXPElement.h:76
virtual void SetThreadId(size_t id) override
Definition: FEXPElement.h:259
size_t _fe_id
Definition: FEXPElement.h:412
virtual ~CFEXPElementNodeConstrain()
Definition: FEXPElement.h:123
virtual void CalcConForce(std::vector< Ptr< ICFEXPElementNodeBase >> &found_nodes) override
Definition: FEXPElementShell.cpp:399
virtual t_fexpcommon_ct GetCriticalDt() override
Definition: FEXPElementShell.cpp:1085
void apply_frc_load(Ptr< CFEXPMatrix2D > &frc)
Definition: FEXPElement.cpp:549
virtual size_t GetType() override
Definition: FEXPElement.h:389
EConstrType
Definition: FEXPElement.h:93
Nodal constrains.
Definition: FEXPElement.h:118
Definition: FEXPElement.h:155
virtual size_t GetThreadNumber() override
Definition: FEXPElement.h:191
EFEXPFECoordinates
Type of individual coordinate.
Definition: FEXPGeom.h:19